package com.aidong.stadium.biz;

import java.util.List;
import java.util.Map;

import com.aidong.activity.entity.Member;
import com.aidong.stadium.entity.MstConclusionabout;
import com.aidong.stadium.entity.MstCourseSchedule;
import com.aidong.stadium.entity.MstCourseType;
import com.aidong.stadium.entity.MstSchedule;
import com.aidong.stadium.entity.StoreCourse;

/**
 * 团操课程
 * 
 * @author java
 * @version 1.0 2015.6.17
 */
public interface MstScheduleBiz {

	/**
	 * 查找门店下的团操课程
	 * 
	 * @return
	 */
	public List<StoreCourse> getAboutSchedule(Map<String, Object> map);
	/**
	 * 課程預約人數
	 * @param map
	 * @return
	 */
	public int getSchedulePerson(int courseAutoId);

	/**
	 * 团操课程介绍
	 * 
	 * @param courseId
	 * @return
	 */
	public MstConclusionabout getScheduleDuce(int autoId);

	/**
	 * @param map
	 *            团操可预约人数
	 * @return
	 */
	public Map<String, Object> getAppointIfFull(Map<String, Object> map);

	/**
	 * 团操已预约人数
	 * 
	 * @param courseId
	 * @return
	 */
	public int getAppointOfPerson(Map<String, Object> map);

	/**
	 * 判断该手机号码是否已经预约
	 * 
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> getIfAppoint(Map<String, Object> map);

	/**
	 * 判断该手机号码是否在同一时间段预约了其它课程
	 * 
	 * @param phoneNo
	 * @return
	 */
	public List<Map<String, Object>> getOtherAppoint(Map<String, Object> map);

	/**
	 * 添加团操课程预约
	 * 
	 * @param map
	 */
	public void addScheduleDuce(MstSchedule schedule);

	/**
	 * 修改预约状态
	 * 
	 * @param map
	 */
	public void editScheduleStatus(Map<String, Object> map);

	/**
	 * 短信预约提醒信息
	 * 
	 * @param courseId
	 * @return
	 */
	public Map<String, Object> getCourseAppointRemind(int autoId);

	/**
	 * 团操课程差价
	 * 
	 * @param orderId
	 * @return
	 */
	public int getMststorePriceDiffer(int orderId);

	/**
	 * 团操课程上课列表
	 * 
	 * @param map
	 * @return
	 */
	public List<MstCourseSchedule> getScheduleTimelist(Map<String, Object> map);

	/**
	 * 团操课程列表
	 * 
	 * @return
	 */
	public List<MstCourseType> getCourseType(Map<String,Object> map);

	/**
	 * 可提前预约天数
	 * 
	 * @param autoId
	 * @return
	 */
	public Map<String, Object> getCallableBondDay(int autoId);

	/**
	 * 课程详情已报名人数
	 * 
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> getCourseAboutDetail(Map<String, Object> map);

	/**
	 * 课程报名列表
	 * 
	 * @param map
	 * @return
	 */
	public List<Member> getAlreadySignedCourse(Map<String, Object> map);

	/**
	 * 支付信息
	 * 
	 * @param autoId
	 * @return
	 */
	public String getPayInfo(int autoId);

	/**
	 * 更新 version值
	 * 已登录或已注册
	 * @param map
	 * @return
	 */
	public Map<String, Object> editScheduleVersion(Map<String, Object> map,MstSchedule schedule);
	/**
	 * 更新version字段
	 * 未注册
	 * @param map
	 * @param schedule
	 * @return
	 */
	public Map<String, Object> editScheduleVersionNoSign(Map<String, Object> map,MstSchedule schedule,Map<String, Object> regMap);

	/**
	 * 获取课程autoID（根据预约号）
	 * @return
	 */
	public int getScheduleAutoId(int subscribeId);

	public void cutScheduleVersion(int autoId);
	
	public int getCourseAboutCount(Map<String, Object> map);
	
	/**
	 * 根据课程时间ID和爱动号查看该用户是否已购买该课程
	 * @param map
	 * @return
	 */
	public Map<String,Object> getConclusByIdongId(Map<String,Object> map);
	/*
	 * 获取周几
	 */
	public Map<String,Object> getScheduleWeek(Map<String,Object> map);
	
	/**\
	 * 根据课程时间ID获取课程信息
	 * @param map
	 * @return
	 */
	public MstSchedule getSubscribeDetail(Map<String,Object> map);
	
	/**
	 * 根据教练爱动号查询出该教练获取的票数
	 * @param map
	 * @return
	 */
	public Map<String,Object> getVoteByCaochId(Map<String,Object> map);
}
